package com.company.aicrawlers.service;

import com.company.aicrawlers.entity.ProductCategoryDict;

import java.util.List;

/**
 * 产品类别字典服务接口
 *
 * @author AI Crawlers Team
 * @date 2025-10-10
 */
public interface ProductCategoryDictService {
    
    /**
     * 获取所有类别（树形结构）
     *
     * @return 类别列表
     */
    List<ProductCategoryDict> getTreeList();
    
    /**
     * 获取某父类别下的子类别
     *
     * @param parentId 父类别ID
     * @return 子类别列表
     */
    List<ProductCategoryDict> getChildren(Long parentId);
    
    /**
     * 根据类别名称获取类别信息
     *
     * @param categoryName 类别名称
     * @return 类别对象
     */
    ProductCategoryDict getByCategoryName(String categoryName);
    
    /**
     * 获取所有启用的类别（扁平列表）
     *
     * @return 类别列表
     */
    List<ProductCategoryDict> getAllEnabled();
    
    /**
     * 根据ID获取类别
     *
     * @param id 类别ID
     * @return 类别对象
     */
    ProductCategoryDict getById(Long id);
    
    /**
     * 创建类别
     *
     * @param category 类别对象
     * @return 类别ID
     */
    Long create(ProductCategoryDict category);
    
    /**
     * 更新类别
     *
     * @param category 类别对象
     */
    void update(ProductCategoryDict category);
    
    /**
     * 删除类别
     *
     * @param id 类别ID
     */
    void delete(Long id);
    
    /**
     * 批量删除类别
     *
     * @param ids 类别ID列表
     */
    void batchDelete(List<Long> ids);
}

